package sv.com.renacempleo.dso.red;

import java.util.HashMap;
import java.util.Map;

import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import sv.com.renacempleo.dso.BaseServiceImpl;
import sv.com.renacempleo.dto.red.RedDiscapacidadAyudaTecnica;
import sv.com.renacempleo.dto.red.RedDiscapacidadFisicoPsiquico;
import sv.com.renacempleo.dto.red.RedDiscapacidadTrabajo;
import sv.com.renacempleo.exception.WebException;

public class RedDiscapacidadServiceImpl extends BaseServiceImpl implements RedDiscapacidadService{
	
	@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false, rollbackFor = {Exception.class, WebException.class})
	public void saveRedDiscapacidadFisicoPsiquico(RedDiscapacidadFisicoPsiquico redDiscapacidadFisicoPsiquico) throws WebException{
		try {
			save(redDiscapacidadFisicoPsiquico);
		} catch (Exception e) {
			logger.error(e, e);
			throw new WebException("Problemas al intentar actualizar la informaci\u00F3n");
		}
	}
	
	@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false, rollbackFor = {Exception.class, WebException.class})
	public void saveRedDiscapacidadAyudaTecnicaDatos(RedDiscapacidadTrabajo redDiscapacidadTrabajo, String[] redAyudaTecnicas) throws WebException{
		String hqlQuery = "delete from RedDiscapacidadAyudaTecnica where redDemandante.redDemandanteFolio = :redDemandanteFolio";
		Map<String, Object> parameters = new HashMap<String, Object>();
		Long redDemandanteFolio = redDiscapacidadTrabajo.getRedDemandante().getRedDemandanteFolio();
		parameters.put("redDemandanteFolio", redDemandanteFolio);
		executeNonHibernateQuery(hqlQuery, parameters);
		RedDiscapacidadAyudaTecnica redAyudaTecnica = null;
		if(redAyudaTecnicas != null)
			for (String redAyudaTecnicaTipo : redAyudaTecnicas) {
				redAyudaTecnica = new RedDiscapacidadAyudaTecnica();
				redAyudaTecnica.setRedAyudaTecnicaTipo(redAyudaTecnicaTipo);
				redAyudaTecnica.setRedDemandante(redDiscapacidadTrabajo.getRedDemandante());
				save(redAyudaTecnica);
			}
		save(redDiscapacidadTrabajo);
	}
	
	
}
